'use strict';

const Controller = require('egg').Controller;

class ChatController extends Controller {
  async chat() {
    const { ctx, app } = this;

    // 前端发来的参数
    const msg = ctx.args[0];

    const { id, value, userid } = msg;

    // 先获取评论人的用户信息
    const userInfo = await this.app.mysql.get('userlist', { id: userid });

    // 将评论添加到评论表中
    await this.app.mysql.insert('comment', {
      content: value,
      userid,
      article: id * 1,
      img: userInfo.img,
      date: new Date().getTime(),
      username: userInfo.name,
    });

    // 获取评论列表中当前文章的评论
    const data = await app.mysql.select('comment', {
      where: {
        article: id * 1,
      },
    });

    // 获取到当前socket的命名空间
    const socket = app.io.of('/io');

    // 当前命名空间下的id
    const ids = ctx.socket.id;


    //  只给自己广播
    socket.sockets[ids].emit('res', data);

    // 除去自己之外的其余用户广播
    ctx.socket.sockets[ids].broadcast.emit('res', data);


  }


  async getList() {
    const { ctx, app } = this;

    const msg = ctx.args[0];

    const { id } = msg;

    // 获取评论列表中当前文章的评论
    const data = await app.mysql.select('comment', {
      where: {
        article: id * 1,
      },
    });

    ctx.socket.emit('res', data);

  }

}

module.exports = ChatController;
